/**
 * All-right reserved by gglu\lqz\qq 2010-2020
 */
package com.injury.hunan.service;

import java.io.Serializable;

import com.injury.hunan.dao.common.ICommonEntityDao;

/**
 * 请写上此类的主要功能
 * @author gglu
 * @version 2008年7月21日 上午12:19:10
 * @surpportjdk 1.5+
 * 
 */
public interface ICommonService<T> {
	
	ICommonEntityDao<T> getDao();
	
	/**
	 * 保存实体.
	 * 
	 * @param entity
	 */
	void save(T entity);

	/**
	 * 修改实体.
	 * 
	 * @param entity
	 */
	void update(T entity);

	/**
	 * 从数据库中刷新某实体.
	 * 
	 * @param entity
	 *            待刷新实体.
	 */
	void refresh(T entity);

	/**
	 * 如果该实体存在持久化上下文中，则更新实体，否则新增实体.
	 * 
	 * @param entity
	 *            待merge的实体.
	 * @return 持久化后的新实体.
	 */
	T merge(T entity);

	/**
	 * 根据主键删除某实体.
	 * 
	 * @param clazz
	 *            实体类.
	 * @param primaryKey
	 *            主键.
	 */
	void delete(Class<T> clazz, Serializable primaryKey);
	
	
	/**
	 * 删除实体.
	 * 
	 * @param entity
	 *            待删除实体.
	 */
	void delete(T entity);

	/**
	 * 根据某实体主键，查询出该实体.
	 * 
	 * @param clazz
	 *            实体类.
	 * @param primaryKey
	 *            主键.
	 */
	T findByKey(Class<T> clazz, Serializable primaryKey);

	/**
	 * 分页查询.
	 * 
	 * @param clazz
	 *            实体类
	 * @param page
	 *            分页信息，可包含排序、条件查询等.
	 *//*
	void findWithPage(Class<T> clazz, PageUtil<T> page);*/

}
